package com.sojson.serversocket.config.handler.business.data;

import org.springframework.stereotype.Component;

import com.sojson.serversocket.util.ServerSocketPoolUtil;
import com.sojson.serversocket.util.ServerSocketUtil;
import com.sojson.util.HexUtil;

import io.netty.channel.ChannelHandlerContext;
import io.netty.util.AttributeKey;
import lombok.extern.slf4j.Slf4j;

/**
 * 业务包处理器(获取电表状态字数据)
 *
 * @author liu
 * @date 2024-05-30
 */
@Slf4j
@Component
public class ServerSocketHandlerGetStatusData {

    public void run(ChannelHandlerContext ctx, Byte[] barr, String addrRever, String data) {
        // 电表状态字
        String meterStatusWord = Integer.toBinaryString(HexUtil.parseHexOne(data.substring(8, 10)));
        StringBuilder str = new StringBuilder();
        int length = 8 - meterStatusWord.length();
        for (int i = 0; i < length; i++) {
            str.append(ServerSocketUtil.COMP_ZORE);
        }
        meterStatusWord = str.append(meterStatusWord).substring(4, 5);

        // 缓存状态
        ctx.channel().attr(AttributeKey.valueOf(addrRever))
            .set(null);
        // 获取使用量
        Object object = ctx.channel().attr(AttributeKey.valueOf(ServerSocketPoolUtil.ADDR_KEY)).get();
        ServerSocketUtil.getData(object.toString(), addrRever);
    }

}